RedHat 10.0 一键安装 Oracle 19C RAC
程小虎2025-12-30 23:19:20
✨ 前言
Oracle 一键安装脚本,演示 RedHat 10.0 一键安装 Oracle 19C RAC(19.3)过程(全程无需人工干预)。
教程支持系统版本如下:
- RedHat、OracleLinux、RockyLinux、AlmaLinux 10 全系
安装包下载:Oracle一键安装包
系统镜像下载:Redhat系统镜像
🔧 安装准备
- 系统组安装好操作系统(支持最小化安装)
- 网络组配置好主机网络,通常只需要一个公网 IP 地址
- DBA 创建软件目录:
mkdir /soft - DBA 上传 Oracle 安装介质(基础包,补丁包)到 /soft 目录下
- DBA 上传 Oracle 一键安装脚本到 /soft 目录下,授予脚本执行权限:
chmod +x OracleshellInstall - 根据脚本安装脚本以及实际情况,配置好脚本的安装参数,在 /soft 目录下执行一键安装即可。
需要上传的文件:
提示
- OracleShellInstall # Oracle 一键安装脚本
- LINUX.X64_193000_db_home.zip # Oracle 安装包
- LINUX.X64_193000_grid_home.zip # Grid 安装包
- rlwrap-0.44.tar.gz # rlwrap 工具
📄 挂载本地 yum 源
所有节点以及共享存储服务器都要配置
各镜像名称:
- rhel-10.0-x86_64-dvd.iso
上传系统镜像 rhel-10.0-x86_64-dvd.iso 到 /mnt 路径下 ,然后执行下面命令
images="rhel-10.0-x86_64-dvd.iso"
mkdir /yum
mount -o loop /mnt/$images /yum
echo "mount -o loop /mnt/$images /yum" >> /etc/rc.local
chmod +x /etc/rc.local
mkdir /etc/yum.repos.d/bk
mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/bk/
cat > /etc/yum.repos.d/local.repo << EOF
[BaseOS]
name=BaseOS
baseurl=file:///yum/BaseOS
gpgcheck=0
enable=1
[AppStream]
name=AppStream
baseurl=file:///yum/AppStream
gpgcheck=0
enable=1
EOF
yum clean all
yum makecache
📄 共享存储配置
若已配置可忽略
📄 服务端配置
上传 storage_server.sh 脚本到共享存储服务器,修改参数执行脚本
# 修改磁盘组列表和RAC节点数量参数,然后执行脚本,其中磁盘组名称根据实际修改,RAC节点数量默认2通常不用修改
bash storage_server.sh \
-rac_node_qty=2 `# RAC节点数量,默认为2`\
-disk_group=/dev/sdb,/dev/sdc,/dev/sdd `# 磁盘组列表`
📄 客户端配置
上传 storage_client.sh 脚本到 各个 rac 节点,修改共享存储服务器 IP,以及对应的节点
## 修改存储服务器IP为实际的,当前的RAC节点(节点1就写rac1,节点2就写rac2,以此类推)
bash storage_client.sh \
-storage_server_ip="192.168.80.59" `# 存储服务器IP`\
-curr_node=rac1 `# 当前RAC节点`
📄 环境信息
# 主机版本
## 节点一
[root@rac01 soft]# cat /etc/os-release
NAME="Red Hat Enterprise Linux"
VERSION="10.0 (Coughlan)"
ID="rhel"
ID_LIKE="centos fedora"
VERSION_ID="10.0"
PLATFORM_ID="platform:el10"
PRETTY_NAME="Red Hat Enterprise Linux 10.0 (Coughlan)"
ANSI_COLOR="0;31"
LOGO="fedora-logo-icon"
CPE_NAME="cpe:/o:redhat:enterprise_linux:10::baseos"
HOME_URL="https://www.redhat.com/"
VENDOR_NAME="Red Hat"
VENDOR_URL="https://www.redhat.com/"
DOCUMENTATION_URL="https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/10"
BUG_REPORT_URL="https://issues.redhat.com/"
REDHAT_BUGZILLA_PRODUCT="Red Hat Enterprise Linux 10"
REDHAT_BUGZILLA_PRODUCT_VERSION=10.0
REDHAT_SUPPORT_PRODUCT="Red Hat Enterprise Linux"
REDHAT_SUPPORT_PRODUCT_VERSION="10.0"
## 节点二
[root@rac02 ~]# cat /etc/os-release
NAME="Red Hat Enterprise Linux"
VERSION="10.0 (Coughlan)"
ID="rhel"
ID_LIKE="centos fedora"
VERSION_ID="10.0"
PLATFORM_ID="platform:el10"
PRETTY_NAME="Red Hat Enterprise Linux 10.0 (Coughlan)"
ANSI_COLOR="0;31"
LOGO="fedora-logo-icon"
CPE_NAME="cpe:/o:redhat:enterprise_linux:10::baseos"
HOME_URL="https://www.redhat.com/"
VENDOR_NAME="Red Hat"
VENDOR_URL="https://www.redhat.com/"
DOCUMENTATION_URL="https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/10"
BUG_REPORT_URL="https://issues.redhat.com/"
REDHAT_BUGZILLA_PRODUCT="Red Hat Enterprise Linux 10"
REDHAT_BUGZILLA_PRODUCT_VERSION=10.0
REDHAT_SUPPORT_PRODUCT="Red Hat Enterprise Linux"
REDHAT_SUPPORT_PRODUCT_VERSION="10.0"
# 网络信息
## 节点一
[root@rac01 soft]# ip a
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 00:0c:29:c3:dd:0e brd ff:ff:ff:ff:ff:ff
altname enp2s1
altname enx000c29c3dd0e
inet 192.168.80.51/24 brd 192.168.80.255 scope global noprefixroute ens33
valid_lft forever preferred_lft forever
inet6 fe80::7c17:cd8d:e18d:91e1/64 scope link noprefixroute
valid_lft forever preferred_lft forever
3: ens37: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 00:0c:29:c3:dd:18 brd ff:ff:ff:ff:ff:ff
altname enp2s5
altname enx000c29c3dd18
inet 192.168.10.11/24 brd 192.168.10.255 scope global noprefixroute ens37
valid_lft forever preferred_lft forever
inet6 fe80::4bc6:13d5:d064:20b6/64 scope link noprefixroute
valid_lft forever preferred_lft forever
## 节点二
[root@rac02 ~]# ip a
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 00:0c:29:2f:7f:a1 brd ff:ff:ff:ff:ff:ff
altname enp2s1
altname enx000c292f7fa1
inet 192.168.80.52/24 brd 192.168.80.255 scope global noprefixroute ens33
valid_lft forever preferred_lft forever
inet6 fe80::7c5d:6f43:1ec6:4976/64 scope link noprefixroute
valid_lft forever preferred_lft forever
3: ens37: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 00:0c:29:2f:7f:ab brd ff:ff:ff:ff:ff:ff
altname enp2s5
altname enx000c292f7fab
inet 192.168.10.12/24 brd 192.168.10.255 scope global noprefixroute ens37
valid_lft forever preferred_lft forever
inet6 fe80::9f46:466c:769c:f7d7/64 scope link noprefixroute
valid_lft forever preferred_lft forever
# 挂载本地 ISO 镜像
## 节点一
[root@rac01 soft]# ll /yum
总计 53
drwxr-xr-x 1 root root 2048 4月11日 03:18 AppStream
drwxr-xr-x 1 root root 2048 4月11日 03:18 BaseOS
drwxr-xr-x 1 root root 2048 4月11日 03:13 boot
drwxr-xr-x 1 root root 2048 4月11日 03:13 EFI
-r--r--r-- 1 root root 8154 4月11日 03:05 EULA
-r--r--r-- 1 root root 8693 4月11日 03:19 extra_files.json
drwxr-xr-x 1 root root 2048 4月11日 03:19 Flatpaks
-r--r--r-- 1 root root 18092 4月11日 03:05 GPL
drwxr-xr-x 1 root root 2048 4月11日 03:13 images
-r--r--r-- 1 root root 102 4月11日 03:18 media.repo
-r--r--r-- 1 root root 1670 4月11日 03:05 RPM-GPG-KEY-redhat-beta
-r--r--r-- 1 root root 3814 4月11日 03:05 RPM-GPG-KEY-redhat-release
## 节点二
[root@rac02 ~]# ll /yum
总计 53
drwxr-xr-x 1 root root 2048 4月11日 03:18 AppStream
drwxr-xr-x 1 root root 2048 4月11日 03:18 BaseOS
drwxr-xr-x 1 root root 2048 4月11日 03:13 boot
drwxr-xr-x 1 root root 2048 4月11日 03:13 EFI
-r--r--r-- 1 root root 8154 4月11日 03:05 EULA
-r--r--r-- 1 root root 8693 4月11日 03:19 extra_files.json
drwxr-xr-x 1 root root 2048 4月11日 03:19 Flatpaks
-r--r--r-- 1 root root 18092 4月11日 03:05 GPL
drwxr-xr-x 1 root root 2048 4月11日 03:13 images
-r--r--r-- 1 root root 102 4月11日 03:18 media.repo
-r--r--r-- 1 root root 1670 4月11日 03:05 RPM-GPG-KEY-redhat-beta
-r--r--r-- 1 root root 3814 4月11日 03:05 RPM-GPG-KEY-redhat-release
## 节点一
[root@rac01 soft]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
loop0 7:0 0 7.9G 0 loop /yum
sda 8:0 0 200G 0 disk
├─sda1 8:1 0 2M 0 part
├─sda2 8:2 0 2G 0 part /boot
└─sda3 8:3 0 198G 0 part
├─rhel-root 253:0 0 190G 0 lvm /
└─rhel-swap 253:1 0 8G 0 lvm [SWAP]
sdb 8:16 0 50G 0 disk
sdc 8:32 0 50G 0 disk
sdd 8:48 0 50G 0 disk
sr0 11:0 1 1024M 0 rom
## 节点二
[root@rac02 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
loop0 7:0 0 7.9G 0 loop /yum
sda 8:0 0 200G 0 disk
├─sda1 8:1 0 2M 0 part
├─sda2 8:2 0 2G 0 part /boot
└─sda3 8:3 0 198G 0 part
├─rhel-root 253:0 0 190G 0 lvm /
└─rhel-swap 253:1 0 8G 0 lvm [SWAP]
sdb 8:16 0 50G 0 disk
sdc 8:32 0 50G 0 disk
sdd 8:48 0 50G 0 disk
sr0 11:0 1 1024M 0 rom
# 安装包存放在 /soft 目录下
[root@rac01 soft]# ll
总计 5810024
-rw-r--r-- 1 root root 3059705302 6月26日 13:45 LINUX.X64_193000_db_home.zip
-rw-r--r-- 1 root root 2889184573 6月26日 13:45 LINUX.X64_193000_grid_home.zip
-rw-r--r-- 1 root root 245190 6月26日 13:44 OracleShellInstall
-rw-r--r-- 1 root root 321590 6月26日 13:44 rlwrap-0.44.tar.gz
确保安装环境准备完成后,即可执行一键安装。
🛠️ 安装命令
使用标准生产环境安装参数(安装过程若失败,脚本支持重复执行安装):
# 根据脚本 README 或者 -h 命令提示,编辑好一键安装命令,进入 /soft 目录执行安装:
chmod +x /soft/OracleShellInstall
/soft/OracleShellInstall \
-n rac `# RAC 主机名前缀`\
-hn rac01,rac02 `# RAC 主机名`\
-cn rac-cls `# RAC 集群名称`\
-rp admin `# 主机 root 用户密码`\
-gp grid `# 主机 grid 用户密码`\
-op oracle `# 主机 oracle 用户密码`\
-lf ens33 `# 主机网卡名称`\
-pf ens37 `# 主机心跳网卡名称`\
-ri 192.168.80.51,192.168.80.52 `# RAC 公网 IP`\
-vi 192.168.80.53,192.168.80.54 `# RAC 虚拟 IP`\
-si 192.168.80.55 `# RAC SCAN IP`\
-od /dev/sdb `# OCR 磁盘盘符名称`\
-dd /dev/sdc `# DATA 磁盘盘符名称`\
-ad /dev/sdd `# ARCH 磁盘盘符名称`\
-o orcl `# 数据库名称`\
-ds AL32UTF8 `# 数据库字符集`\
-ns AL16UTF16 `# 国家字符集`\
-redo 100 `# 在线重做日志大小(M)`\
-dp oracle123 `# sys/system 用户密码`\
-opd Y `# 是否优化数据库`
🛠️ 安装过程
███████ ██ ████████ ██ ██ ██ ██ ██ ██ ██
██░░░░░██ ░██ ██░░░░░░ ░██ ░██ ░██░██ ░██ ░██ ░██
██ ░░██ ██████ ██████ █████ ░██ █████ ░██ ░██ █████ ░██ ░██░██ ███████ ██████ ██████ ██████ ░██ ░██
░██ ░██░░██░░█ ░░░░░░██ ██░░░██ ░██ ██░░░██░█████████░██████ ██░░░██ ░██ ░██░██░░██░░░██ ██░░░░ ░░░██░ ░░░░░░██ ░██ ░██
░██ ░██ ░██ ░ ███████ ░██ ░░ ░██░███████░░░░░░░░██░██░░░██░███████ ░██ ░██░██ ░██ ░██░░█████ ░██ ███████ ░██ ░██
░░██ ██ ░██ ██░░░░██ ░██ ██ ░██░██░░░░ ░██░██ ░██░██░░░░ ░██ ░██░██ ░██ ░██ ░░░░░██ ░██ ██░░░░██ ░██ ░██
░░███████ ░███ ░░████████░░█████ ███░░██████ ████████ ░██ ░██░░██████ ███ ███░██ ███ ░██ ██████ ░░██ ░░████████ ███ ███
░░░░░░░ ░░░ ░░░░░░░░ ░░░░░ ░░░ ░░░░░░ ░░░░░░░░ ░░ ░░ ░░░░░░ ░░░ ░░░ ░░ ░░░ ░░ ░░░░░░ ░░ ░░░░░░░░ ░░░ ░░░
注意:本脚本仅用于新服务器上实施部署数据库使用,严禁在已运行数据库的主机上执行,以免发生数据丢失或者损坏,造成不可挽回的损失!!!
请选择安装模式 [单机(si)/单机ASM(sa)/集群(rac)] : rac
数据库安装模式: rac
请选择数据库版本 [11|12|19|21|23] : 19
数据库版本: 19
!!! 免责声明:当前操作系统版本是 [ Red Hat Enterprise Linux 10.0 (Coughlan) ] 不在 Oracle 官方支持列表,本脚本只负责安装,请确认是否继续安装 (Y/N): [Y]
OracleShellInstall 开始安装,详细安装过程可查看日志: tail -2000f /soft/print_shell_install_20250626134640.log
正在进行安装前检查,请稍等......
正在检测安装包 /soft/LINUX.X64_193000_grid_home.zip 的 MD5 值是否正确,请稍等......
正在检测安装包 /soft/LINUX.X64_193000_db_home.zip 的 MD5 值是否正确,请稍等......
正在配置本地软件源......已完成 (耗时: 0 秒)
配置 root 用户互信......已完成 (耗时: 5 秒)
正在检查并更新 RAC 主机时间......已完成 (耗时: 1 秒)
正在获取操作系统信息......已完成 (耗时: 1 秒)
正在安装依赖包......已完成 (耗时: 46 秒)
正在禁用防火墙......已完成 (耗时: 1 秒)
正在禁用 selinux......已完成 (耗时: 0 秒)
正在配置 nsyctl......已完成 (耗时: 0 秒)
正在配置主机名和 hosts 文件......已完成 (耗时: 1 秒)
正在创建用户和组......已完成 (耗时: 1 秒)
正在创建安装目录......已完成 (耗时: 0 秒)
正在配置 Avahi-daemon 服务......已完成 (耗时: 1 秒)
正在配置透明大页 && NUMA && 磁盘 IO 调度器......已完成 (耗时: 1 秒)
正在配置操作系统参数 sysctl......已完成 (耗时: 0 秒)
正在配置 RemoveIPC......已完成 (耗时: 1 秒)
正在配置用户限制 limit......已完成 (耗时: 0 秒)
正在配置 shm 目录......已完成 (耗时: 0 秒)
正在安装 rlwrap 插件......已完成 (耗时: 6 秒)
正在配置用户环境变量......已完成 (耗时: 1 秒)
正在配置 RAC 其他节点信息......已完成 (耗时: 78 秒)
正在配置 RAC 所有节点互信......已完成 (耗时: 16 秒)
正在解压 Grid 安装包以及补丁......已完成 (耗时: 32 秒)
正在解压 Oracle 软件以及补丁......已完成 (耗时: 41 秒)
正在安装 Grid 软件以及补丁......已完成 (耗时: 1197 秒)
正在创建 ASM 磁盘组......已完成 (耗时: 58 秒)
正在安装 Oracle 软件以及补丁......已完成 (耗时: 389 秒)
正在创建数据库......已完成 (耗时: 736 秒)
正在优化数据库......已完成 (耗时: 51 秒)
恭喜!Oracle 一键安装执行完成 (耗时: 2690 秒),现在是否重启主机:[Y/N] Y
正在重启节点 192.168.80.52 主机......
正在重启当前节点主机......
✅ 连接测试
查看系统版本:
[root@rac01 soft]# cat /etc/os-release
NAME="Red Hat Enterprise Linux"
VERSION="10.0 (Coughlan)"
ID="rhel"
ID_LIKE="centos fedora"
VERSION_ID="10.0"
PLATFORM_ID="platform:el10"
PRETTY_NAME="Red Hat Enterprise Linux 10.0 (Coughlan)"
ANSI_COLOR="0;31"
LOGO="fedora-logo-icon"
CPE_NAME="cpe:/o:redhat:enterprise_linux:10::baseos"
HOME_URL="https://www.redhat.com/"
VENDOR_NAME="Red Hat"
VENDOR_URL="https://www.redhat.com/"
DOCUMENTATION_URL="https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/10"
BUG_REPORT_URL="https://issues.redhat.com/"
REDHAT_BUGZILLA_PRODUCT="Red Hat Enterprise Linux 10"
REDHAT_BUGZILLA_PRODUCT_VERSION=10.0
REDHAT_SUPPORT_PRODUCT="Red Hat Enterprise Linux"
REDHAT_SUPPORT_PRODUCT_VERSION="10.0"
查看 Grid 版本以及补丁:
[grid@rac01:/home/grid]$ sqlplus -v
SQL*Plus: Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
[grid@rac01:/home/grid]$ opatch lspatches
29585399;OCW RELEASE UPDATE 19.3.0.0.0 (29585399)
29517247;ACFS RELEASE UPDATE 19.3.0.0.0 (29517247)
29517242;Database Release Update : 19.3.0.0.190416 (29517242)
29401763;TOMCAT RELEASE UPDATE 19.0.0.0.0 (29401763)
OPatch succeeded.
查看集群:
[grid@rac01:/home/grid]$ crsctl stat res -t
--------------------------------------------------------------------------------
Name Target State Server State details
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.LISTENER.lsnr
ONLINE ONLINE rac01 STABLE
ONLINE ONLINE rac02 STABLE
ora.chad
ONLINE ONLINE rac01 STABLE
ONLINE ONLINE rac02 STABLE
ora.net1.network
ONLINE ONLINE rac01 STABLE
ONLINE ONLINE rac02 STABLE
ora.ons
ONLINE ONLINE rac01 STABLE
ONLINE ONLINE rac02 STABLE
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.ARCH.dg(ora.asmgroup)
1 ONLINE ONLINE rac01 STABLE
2 ONLINE ONLINE rac02 STABLE
3 OFFLINE OFFLINE STABLE
ora.ASMNET1LSNR_ASM.lsnr(ora.asmgroup)
1 ONLINE ONLINE rac01 STABLE
2 ONLINE ONLINE rac02 STABLE
3 ONLINE OFFLINE STABLE
ora.DATA.dg(ora.asmgroup)
1 ONLINE ONLINE rac01 STABLE
2 ONLINE ONLINE rac02 STABLE
3 OFFLINE OFFLINE STABLE
ora.LISTENER_SCAN1.lsnr
1 ONLINE ONLINE rac02 STABLE
ora.OCR.dg(ora.asmgroup)
1 ONLINE ONLINE rac01 STABLE
2 ONLINE ONLINE rac02 STABLE
3 OFFLINE OFFLINE STABLE
ora.asm(ora.asmgroup)
1 ONLINE ONLINE rac01 Started,STABLE
2 ONLINE ONLINE rac02 Started,STABLE
3 OFFLINE OFFLINE STABLE
ora.asmnet1.asmnetwork(ora.asmgroup)
1 ONLINE ONLINE rac01 STABLE
2 ONLINE ONLINE rac02 STABLE
3 OFFLINE OFFLINE STABLE
ora.cvu
1 ONLINE ONLINE rac02 STABLE
ora.orcl.db
1 ONLINE ONLINE rac01 Open,HOME=/u01/app/o
racle/product/19.3.0
/db,STABLE
2 ONLINE ONLINE rac02 Open,HOME=/u01/app/o
racle/product/19.3.0
/db,STABLE
ora.qosmserver
1 ONLINE ONLINE rac02 STABLE
ora.rac01.vip
1 ONLINE ONLINE rac01 STABLE
ora.rac02.vip
1 ONLINE ONLINE rac02 STABLE
ora.scan1.vip
1 ONLINE ONLINE rac02 STABLE
--------------------------------------------------------------------------------
查看 Oracle 版本以及补丁:
[oracle@rac02:/home/oracle]$ sqlplus -v
SQL*Plus: Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
[oracle@rac02:/home/oracle]$ opatch lspatches
29585399;OCW RELEASE UPDATE 19.3.0.0.0 (29585399)
29517242;Database Release Update : 19.3.0.0.190416 (29517242)
OPatch succeeded.
连接数据库:
[oracle@rac02:/home/oracle]$ sas
SQL*Plus: Release 19.0.0.0.0 - Production on Thu Jun 26 14:37:56 2025
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle. All rights reserved.
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
SYS@orcl2 SQL> show parameter name
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
cdb_cluster_name string
cell_offloadgroup_name string
db_file_name_convert string
db_name string orcl
db_unique_name string orcl
global_names boolean FALSE
instance_name string orcl2
lock_name_space string
log_file_name_convert string
pdb_file_name_convert string
processor_group_name string
service_names string orcl
SYS@orcl2 SQL> select instance_name,status from gv$instance;
INSTANCE_NAME STATUS
---------------- ------------
orcl2 OPEN
orcl1 OPEN
数据库连接正常。
